package com.l.Thread.ThreadPool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 *      线程池
 * Executor：线程池的顶级接口（java.util.concurrent）
 * ExecutorService:线程池接口，可通过submit(Runnable task) 提交任务代码
 * Executors是Executor的工具类：通过此类可以获得一个线程池，不需要自己进行new对象
 * newFixedThreadPool(int nThreads) 获取固定数量的线程池。  nThreads指定线程池中线程的数量
 * newCachedThreadPool()  获得动态数量的线程池，如果不够则创建新的线程池
 *
 * @author Mc.Chai
 * @program: Java基础
 * @create 2021-11-15-17:17 17:17
 */
public class TestTheadPool {
    public static void main(String[] args) {
        //在线程池中最多有三个线程同时处理任务
        ExecutorService executorService= Executors.newFixedThreadPool(3);
        Runnable runnable=new MyTask();
        executorService.submit(runnable);   //执行submit中所接受的任务
        executorService.submit(runnable);   //执行submit中所接受的任务
        executorService.submit(runnable);   //执行submit中所接受的任务
        executorService.submit(runnable);   //执行submit中所接受的任务
    }
}
class MyTask implements Runnable{

    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println(Thread.currentThread().getName()+"-->MyTask:"+i);
        }
    }
}
